package com.ruoyi.learn.java.collection;

import lombok.extern.slf4j.Slf4j;

import java.util.HashSet;
import java.util.Iterator;

@Slf4j
public class HashSetDemo {
    public static void main(String[] args) {
        // 创建一个HashSet集合，存储字符串类型
        HashSet<String> fruits = new HashSet<>();

        fruits.add(null);
        log.info("fruits.size()={}",fruits.size());

        // 1. 向集合中添加元素
        fruits.add("苹果");
        fruits.add("香蕉");
        fruits.add("橙子");
        fruits.add("苹果"); // 添加重复元素，不会被存储
        fruits.add("葡萄");

        System.out.println("HashSet中的元素: " + fruits);
        // 输出结果中元素顺序可能不固定，且没有重复的"苹果"

        // 2. 检查元素是否存在
        boolean hasBanana = fruits.contains("香蕉");
        System.out.println("集合中是否包含'香蕉'? " + hasBanana);

        // 3. 获取集合大小
        System.out.println("集合中元素的数量: " + fruits.size());

        // 4. 删除元素
        boolean isRemoved = fruits.remove("橙子");
        System.out.println("是否成功删除'橙子'? " + isRemoved);
        System.out.println("删除后集合中的元素: " + fruits);

        // 5. 遍历集合 - 方法1: 增强for循环
        System.out.println("\n使用增强for循环遍历:");
        for (String fruit : fruits) {
            System.out.println(fruit);
        }

        // 6. 遍历集合 - 方法2: 迭代器
        System.out.println("\n使用迭代器遍历:");
        Iterator<String> iterator = fruits.iterator();
        while (iterator.hasNext()) {
            String fruit = iterator.next();
            System.out.println(fruit);
        }

        // 7. 清空集合
        fruits.clear();
        System.out.println("\n清空集合后，集合是否为空? " + fruits.isEmpty());
    }
}

